<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::EnsensoGrabber类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_ensenso_grabber.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-attribs">Public 属性</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-static-methods">静态 Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#pri-types">Private 类型</a> &#124;
<a href="classpcl_1_1_ensenso_grabber-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::EnsensoGrabber类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1_grabber.html" title="Grabber interface for PCL 1.x device drivers">Grabber</a> for IDS-Imaging Ensenso's devices.<br  />
The <a href="http://www.ensenso.de/manual/">Ensenso SDK</a> allow to use multiple Ensenso devices to produce a single cloud.<br  />
This feature is not implemented here, it is up to the user to configure multiple Ensenso cameras.<br  />
 
 <a href="classpcl_1_1_ensenso_grabber.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="ensenso__grabber_8h_source.html">ensenso_grabber.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::EnsensoGrabber 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_ensenso_grabber.png" usemap="#pcl::EnsensoGrabber_map" alt=""/>
  <map id="pcl::EnsensoGrabber_map" name="pcl::EnsensoGrabber_map">
<area href="classpcl_1_1_grabber.html" title="Grabber interface for PCL 1.x device drivers" alt="pcl::Grabber" shape="rect" coords="0,0,130,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:adb464c16c81b88c2242a727355a712c3"><td class="memItemLeft" align="right" valign="top"><a id="adb464c16c81b88c2242a727355a712c3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#adb464c16c81b88c2242a727355a712c3">EnsensoGrabber</a> ()</td></tr>
<tr class="memdesc:adb464c16c81b88c2242a727355a712c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <br /></td></tr>
<tr class="separator:adb464c16c81b88c2242a727355a712c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81409fa462be9fcd5bdc6180468d1811"><td class="memItemLeft" align="right" valign="top"><a id="a81409fa462be9fcd5bdc6180468d1811"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a81409fa462be9fcd5bdc6180468d1811">~EnsensoGrabber</a> ()  throw ()</td></tr>
<tr class="memdesc:a81409fa462be9fcd5bdc6180468d1811"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor inherited from the <a class="el" href="classpcl_1_1_grabber.html" title="Grabber interface for PCL 1.x device drivers">Grabber</a> interface. It never throws. <br /></td></tr>
<tr class="separator:a81409fa462be9fcd5bdc6180468d1811"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a592b99cc59683f533b8135dfa3893565"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a592b99cc59683f533b8135dfa3893565">enumDevices</a> () const</td></tr>
<tr class="memdesc:a592b99cc59683f533b8135dfa3893565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Searches for available devices  <a href="classpcl_1_1_ensenso_grabber.html#a592b99cc59683f533b8135dfa3893565">更多...</a><br /></td></tr>
<tr class="separator:a592b99cc59683f533b8135dfa3893565"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cf25748d5a2443f346f5b031cdd1657"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a4cf25748d5a2443f346f5b031cdd1657">openDevice</a> (const int device=0)</td></tr>
<tr class="memdesc:a4cf25748d5a2443f346f5b031cdd1657"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opens an Ensenso device  <a href="classpcl_1_1_ensenso_grabber.html#a4cf25748d5a2443f346f5b031cdd1657">更多...</a><br /></td></tr>
<tr class="separator:a4cf25748d5a2443f346f5b031cdd1657"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b186f84307302e2bfbd136eb48216b8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a1b186f84307302e2bfbd136eb48216b8">closeDevice</a> ()</td></tr>
<tr class="memdesc:a1b186f84307302e2bfbd136eb48216b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Closes the Ensenso device  <a href="classpcl_1_1_ensenso_grabber.html#a1b186f84307302e2bfbd136eb48216b8">更多...</a><br /></td></tr>
<tr class="separator:a1b186f84307302e2bfbd136eb48216b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b10963e90c7a2acc28016ca7036917f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a3b10963e90c7a2acc28016ca7036917f">start</a> ()</td></tr>
<tr class="memdesc:a3b10963e90c7a2acc28016ca7036917f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the point cloud and or image acquisition  <a href="classpcl_1_1_ensenso_grabber.html#a3b10963e90c7a2acc28016ca7036917f">更多...</a><br /></td></tr>
<tr class="separator:a3b10963e90c7a2acc28016ca7036917f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0894a295e1a6a1caea9ef57a3920a8ad"><td class="memItemLeft" align="right" valign="top"><a id="a0894a295e1a6a1caea9ef57a3920a8ad"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a0894a295e1a6a1caea9ef57a3920a8ad">stop</a> ()</td></tr>
<tr class="memdesc:a0894a295e1a6a1caea9ef57a3920a8ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the data acquisition <br /></td></tr>
<tr class="separator:a0894a295e1a6a1caea9ef57a3920a8ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11cc4775131a8a8d794fd58136799365"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a11cc4775131a8a8d794fd58136799365">isRunning</a> () const</td></tr>
<tr class="memdesc:a11cc4775131a8a8d794fd58136799365"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the data acquisition is still running  <a href="classpcl_1_1_ensenso_grabber.html#a11cc4775131a8a8d794fd58136799365">更多...</a><br /></td></tr>
<tr class="separator:a11cc4775131a8a8d794fd58136799365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac546d3496604f572c8d01626e176071d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ac546d3496604f572c8d01626e176071d">isTcpPortOpen</a> () const</td></tr>
<tr class="memdesc:ac546d3496604f572c8d01626e176071d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a TCP port is opened  <a href="classpcl_1_1_ensenso_grabber.html#ac546d3496604f572c8d01626e176071d">更多...</a><br /></td></tr>
<tr class="separator:ac546d3496604f572c8d01626e176071d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a801aec7e16af3ae34bf020d2d8e1b898"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a801aec7e16af3ae34bf020d2d8e1b898">getName</a> () const</td></tr>
<tr class="memdesc:a801aec7e16af3ae34bf020d2d8e1b898"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get class name  <a href="classpcl_1_1_ensenso_grabber.html#a801aec7e16af3ae34bf020d2d8e1b898">更多...</a><br /></td></tr>
<tr class="separator:a801aec7e16af3ae34bf020d2d8e1b898"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe821d292fc44e53dbc6bf80f60c5dc2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#afe821d292fc44e53dbc6bf80f60c5dc2">configureCapture</a> (const bool auto_exposure=true, const bool auto_gain=true, const int bining=1, const float exposure=0.32, const bool front_light=false, const int gain=1, const bool gain_boost=false, const bool hardware_gamma=false, const bool hdr=false, const int pixel_clock=10, const bool projector=true, const int target_brightness=80, const std::string trigger_mode=&quot;Software&quot;, const bool use_disparity_map_area_of_interest=false) const</td></tr>
<tr class="memdesc:afe821d292fc44e53dbc6bf80f60c5dc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure Ensenso capture settings  <a href="classpcl_1_1_ensenso_grabber.html#afe821d292fc44e53dbc6bf80f60c5dc2">更多...</a><br /></td></tr>
<tr class="separator:afe821d292fc44e53dbc6bf80f60c5dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93f01b7890457a2ce394755be3923423"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a93f01b7890457a2ce394755be3923423">grabSingleCloud</a> (<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a> &gt; &amp;cloud)</td></tr>
<tr class="memdesc:a93f01b7890457a2ce394755be3923423"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capture a single point cloud and store it  <a href="classpcl_1_1_ensenso_grabber.html#a93f01b7890457a2ce394755be3923423">更多...</a><br /></td></tr>
<tr class="separator:a93f01b7890457a2ce394755be3923423"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc89fb7d03dbb844813e1ae6c1e457f3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#acc89fb7d03dbb844813e1ae6c1e457f3">initExtrinsicCalibration</a> (const int grid_spacing) const</td></tr>
<tr class="memdesc:acc89fb7d03dbb844813e1ae6c1e457f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set up the Ensenso sensor and API to do 3D extrinsic calibration using the Ensenso 2D patterns  <a href="classpcl_1_1_ensenso_grabber.html#acc89fb7d03dbb844813e1ae6c1e457f3">更多...</a><br /></td></tr>
<tr class="separator:acc89fb7d03dbb844813e1ae6c1e457f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8bacd55a7b6dcee6f15dc6ac5806104"><td class="memItemLeft" align="right" valign="top"><a id="ac8bacd55a7b6dcee6f15dc6ac5806104"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ac8bacd55a7b6dcee6f15dc6ac5806104">clearCalibrationPatternBuffer</a> () const</td></tr>
<tr class="memdesc:ac8bacd55a7b6dcee6f15dc6ac5806104"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear calibration patterns buffer <br /></td></tr>
<tr class="separator:ac8bacd55a7b6dcee6f15dc6ac5806104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad138d12b4b5d658736db944553971c3f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ad138d12b4b5d658736db944553971c3f">captureCalibrationPattern</a> () const</td></tr>
<tr class="memdesc:ad138d12b4b5d658736db944553971c3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Captures a calibration pattern  <a href="classpcl_1_1_ensenso_grabber.html#ad138d12b4b5d658736db944553971c3f">更多...</a><br /></td></tr>
<tr class="separator:ad138d12b4b5d658736db944553971c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33129cceb52294317a18eb529468d07a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a33129cceb52294317a18eb529468d07a">estimateCalibrationPatternPose</a> (Eigen::Affine3d &amp;pattern_pose) const</td></tr>
<tr class="memdesc:a33129cceb52294317a18eb529468d07a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimate the calibration pattern pose  <a href="classpcl_1_1_ensenso_grabber.html#a33129cceb52294317a18eb529468d07a">更多...</a><br /></td></tr>
<tr class="separator:a33129cceb52294317a18eb529468d07a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2277fe79f8aca23bac888523f1bfa0f9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a2277fe79f8aca23bac888523f1bfa0f9">computeCalibrationMatrix</a> (const std::vector&lt; Eigen::Affine3d, Eigen::aligned_allocator&lt; Eigen::Affine3d &gt; &gt; &amp;robot_poses, std::string &amp;json, const std::string setup=&quot;Moving&quot;, const std::string target=&quot;Hand&quot;, const Eigen::Affine3d &amp;guess_tf=Eigen::Affine3d::Identity(), const bool pretty_format=true) const</td></tr>
<tr class="memdesc:a2277fe79f8aca23bac888523f1bfa0f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the calibration matrix using the collected patterns and the robot poses vector  <a href="classpcl_1_1_ensenso_grabber.html#a2277fe79f8aca23bac888523f1bfa0f9">更多...</a><br /></td></tr>
<tr class="separator:a2277fe79f8aca23bac888523f1bfa0f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e05aa2b2632d96e985cfe8d4e373676"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a2e05aa2b2632d96e985cfe8d4e373676">storeEEPROMExtrinsicCalibration</a> () const</td></tr>
<tr class="memdesc:a2e05aa2b2632d96e985cfe8d4e373676"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the link defined in the Link node of the nxTree to the EEPROM  <a href="classpcl_1_1_ensenso_grabber.html#a2e05aa2b2632d96e985cfe8d4e373676">更多...</a><br /></td></tr>
<tr class="separator:a2e05aa2b2632d96e985cfe8d4e373676"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6df93f62e9f56e9174df5db76fcc3afa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a6df93f62e9f56e9174df5db76fcc3afa">clearEEPROMExtrinsicCalibration</a> ()</td></tr>
<tr class="memdesc:a6df93f62e9f56e9174df5db76fcc3afa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the extrinsic calibration stored in the EEPROM by writing an identity matrix  <a href="classpcl_1_1_ensenso_grabber.html#a6df93f62e9f56e9174df5db76fcc3afa">更多...</a><br /></td></tr>
<tr class="separator:a6df93f62e9f56e9174df5db76fcc3afa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2063306cd947f67ab5a55fcfe550ee8b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a2063306cd947f67ab5a55fcfe550ee8b">setExtrinsicCalibration</a> (const double euler_angle, Eigen::Vector3d &amp;rotation_axis, const Eigen::Vector3d &amp;translation, const std::string target=&quot;Hand&quot;)</td></tr>
<tr class="memdesc:a2063306cd947f67ab5a55fcfe550ee8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update Link node in NxLib tree  <a href="classpcl_1_1_ensenso_grabber.html#a2063306cd947f67ab5a55fcfe550ee8b">更多...</a><br /></td></tr>
<tr class="separator:a2063306cd947f67ab5a55fcfe550ee8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef5f7e530c2b84b4b11644343938d664"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#aef5f7e530c2b84b4b11644343938d664">setExtrinsicCalibration</a> (const std::string target=&quot;Hand&quot;)</td></tr>
<tr class="memdesc:aef5f7e530c2b84b4b11644343938d664"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update Link node in NxLib tree with an identity matrix  <a href="classpcl_1_1_ensenso_grabber.html#aef5f7e530c2b84b4b11644343938d664">更多...</a><br /></td></tr>
<tr class="separator:aef5f7e530c2b84b4b11644343938d664"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7eabb8ccc69bc16debfa054fbc52fb0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ae7eabb8ccc69bc16debfa054fbc52fb0">setExtrinsicCalibration</a> (const Eigen::Affine3d &amp;transformation, const std::string target=&quot;Hand&quot;)</td></tr>
<tr class="memdesc:ae7eabb8ccc69bc16debfa054fbc52fb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update Link node in NxLib tree  <a href="classpcl_1_1_ensenso_grabber.html#ae7eabb8ccc69bc16debfa054fbc52fb0">更多...</a><br /></td></tr>
<tr class="separator:ae7eabb8ccc69bc16debfa054fbc52fb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5300dcc9514469836ae02e3b6d47472"><td class="memItemLeft" align="right" valign="top"><a id="ac5300dcc9514469836ae02e3b6d47472"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ac5300dcc9514469836ae02e3b6d47472">getFramesPerSecond</a> () const</td></tr>
<tr class="memdesc:ac5300dcc9514469836ae02e3b6d47472"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain the number of frames per second (FPS) <br /></td></tr>
<tr class="separator:ac5300dcc9514469836ae02e3b6d47472"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add59b06d6b02aceaae73ef3c87db0373"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#add59b06d6b02aceaae73ef3c87db0373">openTcpPort</a> (const int port=24000)</td></tr>
<tr class="memdesc:add59b06d6b02aceaae73ef3c87db0373"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open TCP port to enable access via the <a href="http://www.ensenso.de/manual/software_components.htm">nxTreeEdit</a> program.  <a href="classpcl_1_1_ensenso_grabber.html#add59b06d6b02aceaae73ef3c87db0373">更多...</a><br /></td></tr>
<tr class="separator:add59b06d6b02aceaae73ef3c87db0373"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34b631b996aa4e3364dccaa9d2bb4309"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a34b631b996aa4e3364dccaa9d2bb4309">closeTcpPort</a> (void)</td></tr>
<tr class="memdesc:a34b631b996aa4e3364dccaa9d2bb4309"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close TCP port program  <a href="classpcl_1_1_ensenso_grabber.html#a34b631b996aa4e3364dccaa9d2bb4309">更多...</a><br /></td></tr>
<tr class="separator:a34b631b996aa4e3364dccaa9d2bb4309"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c6ce919164aa4d59180908a2241bfb4"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a6c6ce919164aa4d59180908a2241bfb4">getTreeAsJson</a> (const bool pretty_format=true) const</td></tr>
<tr class="memdesc:a6c6ce919164aa4d59180908a2241bfb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the full NxLib tree as a JSON string  <a href="classpcl_1_1_ensenso_grabber.html#a6c6ce919164aa4d59180908a2241bfb4">更多...</a><br /></td></tr>
<tr class="separator:a6c6ce919164aa4d59180908a2241bfb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa437c818b8d3a198cfc396929a30b2dd"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#aa437c818b8d3a198cfc396929a30b2dd">getResultAsJson</a> (const bool pretty_format=true) const</td></tr>
<tr class="memdesc:aa437c818b8d3a198cfc396929a30b2dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the Result node (of the last command) as a JSON string  <a href="classpcl_1_1_ensenso_grabber.html#aa437c818b8d3a198cfc396929a30b2dd">更多...</a><br /></td></tr>
<tr class="separator:aa437c818b8d3a198cfc396929a30b2dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9dc248e5eccfbcbe870b0ffc7f9c504"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ae9dc248e5eccfbcbe870b0ffc7f9c504">jsonTransformationToEulerAngles</a> (const std::string &amp;json, double &amp;x, double &amp;y, double &amp;z, double &amp;w, double &amp;p, double &amp;r) const</td></tr>
<tr class="memdesc:ae9dc248e5eccfbcbe870b0ffc7f9c504"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the Euler angles corresponding to a JSON string (an angle axis transformation)  <a href="classpcl_1_1_ensenso_grabber.html#ae9dc248e5eccfbcbe870b0ffc7f9c504">更多...</a><br /></td></tr>
<tr class="separator:ae9dc248e5eccfbcbe870b0ffc7f9c504"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26f4375470cf58ff889667257463c090"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a26f4375470cf58ff889667257463c090">jsonTransformationToAngleAxis</a> (const std::string json, double &amp;alpha, Eigen::Vector3d &amp;axis, Eigen::Vector3d &amp;translation) const</td></tr>
<tr class="memdesc:a26f4375470cf58ff889667257463c090"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the angle axis parameters corresponding to a JSON string  <a href="classpcl_1_1_ensenso_grabber.html#a26f4375470cf58ff889667257463c090">更多...</a><br /></td></tr>
<tr class="separator:a26f4375470cf58ff889667257463c090"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5a855363a529e1212eecd6bdfc34742"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ac5a855363a529e1212eecd6bdfc34742">jsonTransformationToMatrix</a> (const std::string transformation, Eigen::Affine3d &amp;matrix) const</td></tr>
<tr class="memdesc:ac5a855363a529e1212eecd6bdfc34742"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the JSON string corresponding to a 4x4 matrix  <a href="classpcl_1_1_ensenso_grabber.html#ac5a855363a529e1212eecd6bdfc34742">更多...</a><br /></td></tr>
<tr class="separator:ac5a855363a529e1212eecd6bdfc34742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98b41658b9744fa11105dc65ed9f7cb2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a98b41658b9744fa11105dc65ed9f7cb2">eulerAnglesTransformationToJson</a> (const double x, const double y, const double z, const double w, const double p, const double r, std::string &amp;json, const bool pretty_format=true) const</td></tr>
<tr class="memdesc:a98b41658b9744fa11105dc65ed9f7cb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the JSON string corresponding to the Euler angles transformation  <a href="classpcl_1_1_ensenso_grabber.html#a98b41658b9744fa11105dc65ed9f7cb2">更多...</a><br /></td></tr>
<tr class="separator:a98b41658b9744fa11105dc65ed9f7cb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c49ec5a1642ccfa7b470a2e86ca5fd5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a3c49ec5a1642ccfa7b470a2e86ca5fd5">angleAxisTransformationToJson</a> (const double x, const double y, const double z, const double rx, const double ry, const double rz, const double alpha, std::string &amp;json, const bool pretty_format=true) const</td></tr>
<tr class="memdesc:a3c49ec5a1642ccfa7b470a2e86ca5fd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the JSON string corresponding to an angle axis transformation  <a href="classpcl_1_1_ensenso_grabber.html#a3c49ec5a1642ccfa7b470a2e86ca5fd5">更多...</a><br /></td></tr>
<tr class="separator:a3c49ec5a1642ccfa7b470a2e86ca5fd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dfa1c0930f95fcb8601297d678176b6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a8dfa1c0930f95fcb8601297d678176b6">matrixTransformationToJson</a> (const Eigen::Affine3d &amp;matrix, std::string &amp;json, const bool pretty_format=true) const</td></tr>
<tr class="memdesc:a8dfa1c0930f95fcb8601297d678176b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the JSON string corresponding to a 4x4 matrix  <a href="classpcl_1_1_ensenso_grabber.html#a8dfa1c0930f95fcb8601297d678176b6">更多...</a><br /></td></tr>
<tr class="separator:a8dfa1c0930f95fcb8601297d678176b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_grabber"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_grabber')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_grabber.html">pcl::Grabber</a></td></tr>
<tr class="memitem:ad1bd77c0344f3cf3283757daddb4fe9d inherit pub_methods_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="ad1bd77c0344f3cf3283757daddb4fe9d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_grabber.html#ad1bd77c0344f3cf3283757daddb4fe9d">Grabber</a> ()</td></tr>
<tr class="memdesc:ad1bd77c0344f3cf3283757daddb4fe9d inherit pub_methods_classpcl_1_1_grabber"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:ad1bd77c0344f3cf3283757daddb4fe9d inherit pub_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c8545d6fe2aadc0fe8ba9643f80c1fc inherit pub_methods_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a1c8545d6fe2aadc0fe8ba9643f80c1fc"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_grabber.html#a1c8545d6fe2aadc0fe8ba9643f80c1fc">~Grabber</a> ()  throw ()</td></tr>
<tr class="memdesc:a1c8545d6fe2aadc0fe8ba9643f80c1fc inherit pub_methods_classpcl_1_1_grabber"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual desctructor. <br /></td></tr>
<tr class="separator:a1c8545d6fe2aadc0fe8ba9643f80c1fc inherit pub_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35dc83ee946b0bd5d0a7cbad4df7427b inherit pub_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a35dc83ee946b0bd5d0a7cbad4df7427b inherit pub_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">boost::signals2::connection&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1_grabber.html#a35dc83ee946b0bd5d0a7cbad4df7427b">registerCallback</a> (const boost::function&lt; T &gt; &amp;callback)</td></tr>
<tr class="memdesc:a35dc83ee946b0bd5d0a7cbad4df7427b inherit pub_methods_classpcl_1_1_grabber"><td class="mdescLeft">&#160;</td><td class="mdescRight">registers a callback function/method to a signal with the corresponding signature  <a href="classpcl_1_1_grabber.html#a35dc83ee946b0bd5d0a7cbad4df7427b">更多...</a><br /></td></tr>
<tr class="separator:a35dc83ee946b0bd5d0a7cbad4df7427b inherit pub_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed2b00928603dfd9e51cfb22adbedae6 inherit pub_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aed2b00928603dfd9e51cfb22adbedae6 inherit pub_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1_grabber.html#aed2b00928603dfd9e51cfb22adbedae6">providesCallback</a> () const</td></tr>
<tr class="memdesc:aed2b00928603dfd9e51cfb22adbedae6 inherit pub_methods_classpcl_1_1_grabber"><td class="mdescLeft">&#160;</td><td class="mdescRight">indicates whether a signal with given parameter-type exists or not  <a href="classpcl_1_1_grabber.html#aed2b00928603dfd9e51cfb22adbedae6">更多...</a><br /></td></tr>
<tr class="separator:aed2b00928603dfd9e51cfb22adbedae6 inherit pub_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
<tr class="memitem:acb694e94e1e8256dcc8a2f8b296f3ee2"><td class="memItemLeft" align="right" valign="top">boost::shared_ptr&lt; const NxLibItem &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#acb694e94e1e8256dcc8a2f8b296f3ee2">root_</a></td></tr>
<tr class="memdesc:acb694e94e1e8256dcc8a2f8b296f3ee2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to the NxLib tree root  <a href="classpcl_1_1_ensenso_grabber.html#acb694e94e1e8256dcc8a2f8b296f3ee2">更多...</a><br /></td></tr>
<tr class="separator:acb694e94e1e8256dcc8a2f8b296f3ee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d5d6d55a5871455fe5f21e3821fe3a9"><td class="memItemLeft" align="right" valign="top">NxLibItem&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a3d5d6d55a5871455fe5f21e3821fe3a9">camera_</a></td></tr>
<tr class="memdesc:a3d5d6d55a5871455fe5f21e3821fe3a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to the camera tree  <a href="classpcl_1_1_ensenso_grabber.html#a3d5d6d55a5871455fe5f21e3821fe3a9">更多...</a><br /></td></tr>
<tr class="separator:a3d5d6d55a5871455fe5f21e3821fe3a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a9cf97b0d7ccfe7cf0e3a879d333dd8ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a9cf97b0d7ccfe7cf0e3a879d333dd8ba">processGrabbing</a> ()</td></tr>
<tr class="memdesc:a9cf97b0d7ccfe7cf0e3a879d333dd8ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Continuously asks for images and or point clouds data from the device and publishes them if available. PCL time stamps are filled for both the images and clouds grabbed (see <a class="el" href="classpcl_1_1_ensenso_grabber.html#a6fbd5b77840cea6b5ed0da8c55161370">getPCLStamp</a>)  <a href="classpcl_1_1_ensenso_grabber.html#a9cf97b0d7ccfe7cf0e3a879d333dd8ba">更多...</a><br /></td></tr>
<tr class="separator:a9cf97b0d7ccfe7cf0e3a879d333dd8ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_grabber"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_grabber')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_grabber.html">pcl::Grabber</a></td></tr>
<tr class="memitem:a1eaf930e8f5bc9befdf9e7e3dd85cab3 inherit pro_methods_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a1eaf930e8f5bc9befdf9e7e3dd85cab3"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>signalsChanged</b> ()</td></tr>
<tr class="separator:a1eaf930e8f5bc9befdf9e7e3dd85cab3 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29a1f6e6e197519b08536b6095d28ccc inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2"><a id="a29a1f6e6e197519b08536b6095d28ccc"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a29a1f6e6e197519b08536b6095d28ccc inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">boost::signals2::signal&lt; T &gt; *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>find_signal</b> () const</td></tr>
<tr class="separator:a29a1f6e6e197519b08536b6095d28ccc inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae87e7482328a297a95396467e0e28856 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2"><a id="ae87e7482328a297a95396467e0e28856"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae87e7482328a297a95396467e0e28856 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><b>num_slots</b> () const</td></tr>
<tr class="separator:ae87e7482328a297a95396467e0e28856 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9ade6bd29a46f6acb411a7968f99ae8 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2"><a id="aa9ade6bd29a46f6acb411a7968f99ae8"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa9ade6bd29a46f6acb411a7968f99ae8 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>disconnect_all_slots</b> ()</td></tr>
<tr class="separator:aa9ade6bd29a46f6acb411a7968f99ae8 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aceece1bd68187c109b289567c33536b9 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2"><a id="aceece1bd68187c109b289567c33536b9"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:aceece1bd68187c109b289567c33536b9 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>block_signal</b> ()</td></tr>
<tr class="separator:aceece1bd68187c109b289567c33536b9 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25c1f3c966c486be2b01fe11d2d0df5a inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2"><a id="a25c1f3c966c486be2b01fe11d2d0df5a"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a25c1f3c966c486be2b01fe11d2d0df5a inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>unblock_signal</b> ()</td></tr>
<tr class="separator:a25c1f3c966c486be2b01fe11d2d0df5a inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a023e6b7d7c8ebc27d59e7076162c4c73 inherit pro_methods_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a023e6b7d7c8ebc27d59e7076162c4c73"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>block_signals</b> ()</td></tr>
<tr class="separator:a023e6b7d7c8ebc27d59e7076162c4c73 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57fa6746fd5521b7cfe27b7847778969 inherit pro_methods_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a57fa6746fd5521b7cfe27b7847778969"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>unblock_signals</b> ()</td></tr>
<tr class="separator:a57fa6746fd5521b7cfe27b7847778969 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e1ee7a265cee458f59414de47a34ed2 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplParams" colspan="2"><a id="a3e1ee7a265cee458f59414de47a34ed2"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a3e1ee7a265cee458f59414de47a34ed2 inherit pro_methods_classpcl_1_1_grabber"><td class="memTemplItemLeft" align="right" valign="top">boost::signals2::signal&lt; T &gt; *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>createSignal</b> ()</td></tr>
<tr class="separator:a3e1ee7a265cee458f59414de47a34ed2 inherit pro_methods_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
静态 Protected 成员函数</h2></td></tr>
<tr class="memitem:a6fbd5b77840cea6b5ed0da8c55161370"><td class="memItemLeft" align="right" valign="top">static pcl::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a6fbd5b77840cea6b5ed0da8c55161370">getPCLStamp</a> (const double ensenso_stamp)</td></tr>
<tr class="memdesc:a6fbd5b77840cea6b5ed0da8c55161370"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Ensenso time stamp into a PCL/ROS time stamp  <a href="classpcl_1_1_ensenso_grabber.html#a6fbd5b77840cea6b5ed0da8c55161370">更多...</a><br /></td></tr>
<tr class="separator:a6fbd5b77840cea6b5ed0da8c55161370"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60b5d1aa0bd6825dbe3ce3b15961596f"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a60b5d1aa0bd6825dbe3ce3b15961596f">getOpenCVType</a> (const int channels, const int bpe, const bool isFlt)</td></tr>
<tr class="memdesc:a60b5d1aa0bd6825dbe3ce3b15961596f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get OpenCV image type corresponding to the parameters given  <a href="classpcl_1_1_ensenso_grabber.html#a60b5d1aa0bd6825dbe3ce3b15961596f">更多...</a><br /></td></tr>
<tr class="separator:a60b5d1aa0bd6825dbe3ce3b15961596f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a4cc87ad6be4e7bd5988fc13d7bff8178"><td class="memItemLeft" align="right" valign="top"><a id="a4cc87ad6be4e7bd5988fc13d7bff8178"></a>
boost::thread&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a4cc87ad6be4e7bd5988fc13d7bff8178">grabber_thread_</a></td></tr>
<tr class="memdesc:a4cc87ad6be4e7bd5988fc13d7bff8178"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1_grabber.html" title="Grabber interface for PCL 1.x device drivers">Grabber</a> thread <br /></td></tr>
<tr class="separator:a4cc87ad6be4e7bd5988fc13d7bff8178"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e6338f221f5e6fa2d214d764da01bb7"><td class="memItemLeft" align="right" valign="top"><a id="a2e6338f221f5e6fa2d214d764da01bb7"></a>
boost::signals2::signal&lt; sig_cb_ensenso_point_cloud &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a2e6338f221f5e6fa2d214d764da01bb7">point_cloud_signal_</a></td></tr>
<tr class="memdesc:a2e6338f221f5e6fa2d214d764da01bb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost point cloud signal <br /></td></tr>
<tr class="separator:a2e6338f221f5e6fa2d214d764da01bb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e68897d92342fae0f029e89a8a113bd"><td class="memItemLeft" align="right" valign="top"><a id="a1e68897d92342fae0f029e89a8a113bd"></a>
boost::signals2::signal&lt; sig_cb_ensenso_images &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a1e68897d92342fae0f029e89a8a113bd">images_signal_</a></td></tr>
<tr class="memdesc:a1e68897d92342fae0f029e89a8a113bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost images signal <br /></td></tr>
<tr class="separator:a1e68897d92342fae0f029e89a8a113bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51c385ebf68613e0796936e2829077ac"><td class="memItemLeft" align="right" valign="top"><a id="a51c385ebf68613e0796936e2829077ac"></a>
boost::signals2::signal&lt; sig_cb_ensenso_point_cloud_images &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a51c385ebf68613e0796936e2829077ac">point_cloud_images_signal_</a></td></tr>
<tr class="memdesc:a51c385ebf68613e0796936e2829077ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost images + point cloud signal <br /></td></tr>
<tr class="separator:a51c385ebf68613e0796936e2829077ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa663d24ad3184066a825b2b5b11ecf4"><td class="memItemLeft" align="right" valign="top"><a id="afa663d24ad3184066a825b2b5b11ecf4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#afa663d24ad3184066a825b2b5b11ecf4">device_open_</a></td></tr>
<tr class="memdesc:afa663d24ad3184066a825b2b5b11ecf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether an Ensenso device is opened or not <br /></td></tr>
<tr class="separator:afa663d24ad3184066a825b2b5b11ecf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3be373b75cb4b16a3e7ecc1835d0b23"><td class="memItemLeft" align="right" valign="top"><a id="aa3be373b75cb4b16a3e7ecc1835d0b23"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#aa3be373b75cb4b16a3e7ecc1835d0b23">tcp_open_</a></td></tr>
<tr class="memdesc:aa3be373b75cb4b16a3e7ecc1835d0b23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether an TCP port is opened or not <br /></td></tr>
<tr class="separator:aa3be373b75cb4b16a3e7ecc1835d0b23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff48a03fa934f94f4b989f47176671ca"><td class="memItemLeft" align="right" valign="top"><a id="aff48a03fa934f94f4b989f47176671ca"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#aff48a03fa934f94f4b989f47176671ca">running_</a></td></tr>
<tr class="memdesc:aff48a03fa934f94f4b989f47176671ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether an Ensenso device is running or not <br /></td></tr>
<tr class="separator:aff48a03fa934f94f4b989f47176671ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac068717957d8173fd3cab3b81d00642f"><td class="memItemLeft" align="right" valign="top"><a id="ac068717957d8173fd3cab3b81d00642f"></a>
<a class="el" href="classpcl_1_1_event_frequency.html">pcl::EventFrequency</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#ac068717957d8173fd3cab3b81d00642f">frequency_</a></td></tr>
<tr class="memdesc:ac068717957d8173fd3cab3b81d00642f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Point cloud capture/processing frequency <br /></td></tr>
<tr class="separator:ac068717957d8173fd3cab3b81d00642f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5199279cd4dedb67013f38386ae11d83"><td class="memItemLeft" align="right" valign="top"><a id="a5199279cd4dedb67013f38386ae11d83"></a>
boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_ensenso_grabber.html#a5199279cd4dedb67013f38386ae11d83">fps_mutex_</a></td></tr>
<tr class="memdesc:a5199279cd4dedb67013f38386ae11d83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutual exclusion for FPS computation <br /></td></tr>
<tr class="separator:a5199279cd4dedb67013f38386ae11d83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_grabber"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_grabber')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_grabber.html">pcl::Grabber</a></td></tr>
<tr class="memitem:a0e74a0908693c0c948452476d0102dac inherit pro_attribs_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a0e74a0908693c0c948452476d0102dac"></a>
std::map&lt; std::string, boost::signals2::signal_base * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>signals_</b></td></tr>
<tr class="separator:a0e74a0908693c0c948452476d0102dac inherit pro_attribs_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63415b3517806c488fa840c54cacb5ad inherit pro_attribs_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a63415b3517806c488fa840c54cacb5ad"></a>
std::map&lt; std::string, std::vector&lt; boost::signals2::connection &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>connections_</b></td></tr>
<tr class="separator:a63415b3517806c488fa840c54cacb5ad inherit pro_attribs_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d8b3dcbecbe76b1f58978ed1b3a222f inherit pro_attribs_classpcl_1_1_grabber"><td class="memItemLeft" align="right" valign="top"><a id="a9d8b3dcbecbe76b1f58978ed1b3a222f"></a>
std::map&lt; std::string, std::vector&lt; boost::signals2::shared_connection_block &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>shared_connections_</b></td></tr>
<tr class="separator:a9d8b3dcbecbe76b1f58978ed1b3a222f inherit pro_attribs_classpcl_1_1_grabber"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private 类型</h2></td></tr>
<tr class="memitem:ad2af26c4f32f38c09b8316fed59f0205"><td class="memItemLeft" align="right" valign="top"><a id="ad2af26c4f32f38c09b8316fed59f0205"></a>
typedef std::pair&lt; <a class="el" href="structpcl_1_1_p_c_l_image.html">pcl::PCLImage</a>, <a class="el" href="structpcl_1_1_p_c_l_image.html">pcl::PCLImage</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PairOfImages</b></td></tr>
<tr class="separator:ad2af26c4f32f38c09b8316fed59f0205"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p><a class="el" href="classpcl_1_1_grabber.html" title="Grabber interface for PCL 1.x device drivers">Grabber</a> for IDS-Imaging Ensenso's devices.<br  />
The <a href="http://www.ensenso.de/manual/">Ensenso SDK</a> allow to use multiple Ensenso devices to produce a single cloud.<br  />
This feature is not implemented here, it is up to the user to configure multiple Ensenso cameras.<br  />
</p>
<dl class="section author"><dt>作者</dt><dd>Victor Lamoine (<a href="#" onclick="location.href='mai'+'lto:'+'vic'+'to'+'r.l'+'am'+'oin'+'e@'+'gma'+'il'+'.co'+'m'; return false;">victo<span style="display: none;">.nosp@m.</span>r.la<span style="display: none;">.nosp@m.</span>moine<span style="display: none;">.nosp@m.</span>@gma<span style="display: none;">.nosp@m.</span>il.co<span style="display: none;">.nosp@m.</span>m</a>)<br  />
</dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a3c49ec5a1642ccfa7b470a2e86ca5fd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c49ec5a1642ccfa7b470a2e86ca5fd5">&#9670;&nbsp;</a></span>angleAxisTransformationToJson()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::angleAxisTransformationToJson </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>rx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>ry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>rz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>pretty_format</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the JSON string corresponding to an angle axis transformation </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The X angle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>The Y angle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">z</td><td>The Z angle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rx</td><td>The X component of the Euler axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ry</td><td>The Y component of the Euler axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rz</td><td>The Z component of the Euler axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">alpha</td><td>The Euler rotation angle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">json</td><td>A string containing the angle axis transformation in JSON format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pretty_format</td><td>JSON formatting style </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>The units are meters and radians! (the Euler axis doesn't need to be normalized) </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See: <a href="http://www.ensenso.de/manual/transformation.htm">transformation page</a> in the EnsensoSDK documentation </dd></dl>

</div>
</div>
<a id="ad138d12b4b5d658736db944553971c3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad138d12b4b5d658736db944553971c3f">&#9670;&nbsp;</a></span>captureCalibrationPattern()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int pcl::EnsensoGrabber::captureCalibrationPattern </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Captures a calibration pattern </p>
<dl class="section return"><dt>返回</dt><dd>the number of calibration patterns stored in the nxTree, -1 on error </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>A device must be opened and must not be running. </dd></dl>
<dl class="section note"><dt>注解</dt><dd>You should use <a class="el" href="classpcl_1_1_ensenso_grabber.html#acc89fb7d03dbb844813e1ae6c1e457f3">initExtrinsicCalibration</a> before </dd></dl>

</div>
</div>
<a id="a6df93f62e9f56e9174df5db76fcc3afa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6df93f62e9f56e9174df5db76fcc3afa">&#9670;&nbsp;</a></span>clearEEPROMExtrinsicCalibration()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::clearEEPROMExtrinsicCalibration </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Clear the extrinsic calibration stored in the EEPROM by writing an identity matrix </p>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>

</div>
</div>
<a id="a1b186f84307302e2bfbd136eb48216b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b186f84307302e2bfbd136eb48216b8">&#9670;&nbsp;</a></span>closeDevice()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::closeDevice </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Closes the Ensenso device </p>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>

</div>
</div>
<a id="a34b631b996aa4e3364dccaa9d2bb4309"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34b631b996aa4e3364dccaa9d2bb4309">&#9670;&nbsp;</a></span>closeTcpPort()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::closeTcpPort </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close TCP port program </p>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>If you do not close the TCP port the program might exit with the port still open, if it is the case use<div class="fragment"><div class="line">ps -ef </div>
</div><!-- fragment --> and<div class="fragment"><div class="line">kill PID </div>
</div><!-- fragment --> to kill the application and effectively close the port. </dd></dl>

</div>
</div>
<a id="a2277fe79f8aca23bac888523f1bfa0f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2277fe79f8aca23bac888523f1bfa0f9">&#9670;&nbsp;</a></span>computeCalibrationMatrix()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::computeCalibrationMatrix </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; Eigen::Affine3d, Eigen::aligned_allocator&lt; Eigen::Affine3d &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>robot_poses</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>setup</em> = <code>&quot;Moving&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>target</em> = <code>&quot;Hand&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Affine3d &amp;&#160;</td>
          <td class="paramname"><em>guess_tf</em> = <code>Eigen::Affine3d::Identity()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>pretty_format</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Computes the calibration matrix using the collected patterns and the robot poses vector </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">robot_poses</td><td>A list of robot poses, 1 for each pattern acquired (in the same order) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">json</td><td>The extrinsic calibration data in JSON format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">setup</td><td>Moving or Fixed, please refer to the Ensenso documentation </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>Please refer to the Ensenso documentation </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">guess_tf</td><td>Guess transformation for the calibration matrix (translation in meters) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pretty_format</td><td>JSON formatting style </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>This can take up to 120 seconds </dd></dl>
<dl class="section note"><dt>注解</dt><dd>Check the result with <a class="el" href="classpcl_1_1_ensenso_grabber.html#aa437c818b8d3a198cfc396929a30b2dd">getResultAsJson</a>. If you want to permanently store the result, use <a class="el" href="classpcl_1_1_ensenso_grabber.html#a2e05aa2b2632d96e985cfe8d4e373676">storeEEPROMExtrinsicCalibration</a>. </dd></dl>

</div>
</div>
<a id="afe821d292fc44e53dbc6bf80f60c5dc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe821d292fc44e53dbc6bf80f60c5dc2">&#9670;&nbsp;</a></span>configureCapture()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::configureCapture </td>
          <td>(</td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>auto_exposure</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>auto_gain</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>bining</em> = <code>1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>exposure</em> = <code>0.32</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>front_light</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>gain</em> = <code>1</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>gain_boost</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>hardware_gamma</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>hdr</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>pixel_clock</em> = <code>10</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>projector</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>target_brightness</em> = <code>80</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>trigger_mode</em> = <code>&quot;Software&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>use_disparity_map_area_of_interest</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Configure Ensenso capture settings </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">auto_exposure</td><td>If set to yes, the exposure parameter will be ignored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auto_gain</td><td>If set to yes, the gain parameter will be ignored </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">bining</td><td>Pixel bining: 1, 2 or 4 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">exposure</td><td>In milliseconds, from 0.01 to 20 ms </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">front_light</td><td>Infrared front light (useful for calibration) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">gain</td><td>Float between 1 and 4 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">gain_boost</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">hardware_gamma</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">hdr</td><td>High Dynamic Range (check compatibility with other options in Ensenso manual) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pixel_clock</td><td>In MegaHertz, from 5 to 85 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">projector</td><td>Use the central infrared projector or not </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">target_brightness</td><td>Between 40 and 210 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">trigger_mode</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">use_disparity_map_area_of_interest</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See <a href="http://www.ensenso.de/manual/index.html?capture.htm">Capture tree item</a> for more details about the parameters. </dd></dl>

</div>
</div>
<a id="a592b99cc59683f533b8135dfa3893565"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a592b99cc59683f533b8135dfa3893565">&#9670;&nbsp;</a></span>enumDevices()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int pcl::EnsensoGrabber::enumDevices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Searches for available devices </p>
<dl class="section return"><dt>返回</dt><dd>The number of Ensenso devices connected </dd></dl>

</div>
</div>
<a id="a33129cceb52294317a18eb529468d07a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33129cceb52294317a18eb529468d07a">&#9670;&nbsp;</a></span>estimateCalibrationPatternPose()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::estimateCalibrationPatternPose </td>
          <td>(</td>
          <td class="paramtype">Eigen::Affine3d &amp;&#160;</td>
          <td class="paramname"><em>pattern_pose</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Estimate the calibration pattern pose </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">pattern_pose</td><td>the calibration pattern pose </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>true if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>A device must be opened and must not be running. </dd></dl>
<dl class="section note"><dt>注解</dt><dd>At least one calibration pattern must have been captured before, use <a class="el" href="classpcl_1_1_ensenso_grabber.html#ad138d12b4b5d658736db944553971c3f">captureCalibrationPattern</a> before </dd></dl>

</div>
</div>
<a id="a98b41658b9744fa11105dc65ed9f7cb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98b41658b9744fa11105dc65ed9f7cb2">&#9670;&nbsp;</a></span>eulerAnglesTransformationToJson()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::eulerAnglesTransformationToJson </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>pretty_format</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the JSON string corresponding to the Euler angles transformation </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The X translation </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">y</td><td>The Y translation </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">z</td><td>The Z translation </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">w</td><td>The yaW angle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The Pitch angle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>The Roll angle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">json</td><td>A string containing the Euler angles transformation in JSON format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pretty_format</td><td>JSON formatting style </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>The units are meters and radians! </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See: <a href="http://www.ensenso.de/manual/transformation.htm">transformation page</a> in the EnsensoSDK documentation </dd></dl>

</div>
</div>
<a id="a801aec7e16af3ae34bf020d2d8e1b898"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a801aec7e16af3ae34bf020d2d8e1b898">&#9670;&nbsp;</a></span>getName()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::string pcl::EnsensoGrabber::getName </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get class name </p>
<dl class="section return"><dt>返回</dt><dd>A string containing the class name </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1_grabber.html#af5765700b48bea8865af2f90e46ea3e6">pcl::Grabber</a>.</p>

</div>
</div>
<a id="a60b5d1aa0bd6825dbe3ce3b15961596f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60b5d1aa0bd6825dbe3ce3b15961596f">&#9670;&nbsp;</a></span>getOpenCVType()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static std::string pcl::EnsensoGrabber::getOpenCVType </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>channels</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>bpe</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>isFlt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get OpenCV image type corresponding to the parameters given </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">channels</td><td>number of channels in the image </td></tr>
    <tr><td class="paramname">bpe</td><td>bytes per element </td></tr>
    <tr><td class="paramname">isFlt</td><td>is float </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>the OpenCV type as a string </dd></dl>

</div>
</div>
<a id="a6fbd5b77840cea6b5ed0da8c55161370"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fbd5b77840cea6b5ed0da8c55161370">&#9670;&nbsp;</a></span>getPCLStamp()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static pcl::uint64_t pcl::EnsensoGrabber::getPCLStamp </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>ensenso_stamp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Convert an Ensenso time stamp into a PCL/ROS time stamp </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ensenso_stamp</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>PCL stamp The Ensenso API returns the time elapsed from January 1st, 1601 (UTC); on Linux OS the reference time is January 1st, 1970 (UTC). See <a href="http://www.ensenso.de/manual/index.html?json_types.htm">time-stamp page</a> for more info about the time stamp conversion. </dd></dl>

</div>
</div>
<a id="aa437c818b8d3a198cfc396929a30b2dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa437c818b8d3a198cfc396929a30b2dd">&#9670;&nbsp;</a></span>getResultAsJson()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string pcl::EnsensoGrabber::getResultAsJson </td>
          <td>(</td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>pretty_format</em> = <code>true</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the Result node (of the last command) as a JSON string </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pretty_format</td><td>JSON formatting style </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>A string containing the Result node in JSON format </dd></dl>

</div>
</div>
<a id="a6c6ce919164aa4d59180908a2241bfb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c6ce919164aa4d59180908a2241bfb4">&#9670;&nbsp;</a></span>getTreeAsJson()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string pcl::EnsensoGrabber::getTreeAsJson </td>
          <td>(</td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>pretty_format</em> = <code>true</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the full NxLib tree as a JSON string </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pretty_format</td><td>JSON formatting style </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>A string containing the NxLib tree in JSON format </dd></dl>

</div>
</div>
<a id="a93f01b7890457a2ce394755be3923423"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93f01b7890457a2ce394755be3923423">&#9670;&nbsp;</a></span>grabSingleCloud()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::grabSingleCloud </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Capture a single point cloud and store it </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">cloud</td><td>The cloud to be filled </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>A device must be opened and not running </dd></dl>

</div>
</div>
<a id="acc89fb7d03dbb844813e1ae6c1e457f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc89fb7d03dbb844813e1ae6c1e457f3">&#9670;&nbsp;</a></span>initExtrinsicCalibration()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::initExtrinsicCalibration </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>grid_spacing</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set up the Ensenso sensor and API to do 3D extrinsic calibration using the Ensenso 2D patterns </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">grid_spacing</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise</dd></dl>
<p>Configures the capture parameters to default values (eg: <code>projector</code> = <code>false</code> and <code>front_light</code> = <code>true</code>) Discards all previous patterns, configures <code>grid_spacing</code> </p><dl class="section warning"><dt>警告</dt><dd>A device must be opened and must not be running. </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See the <a href="http://www.ensenso.de/manual/index.html?calibratehandeyeparameters.htm">Ensenso manual</a> for more information about the extrinsic calibration process. </dd>
<dd>
<a href="http://www.ensenso.de/manual/index.html?gridsize.htm">GridSize</a> item is protected in the NxTree, you can't modify it. </dd></dl>

</div>
</div>
<a id="a11cc4775131a8a8d794fd58136799365"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11cc4775131a8a8d794fd58136799365">&#9670;&nbsp;</a></span>isRunning()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::isRunning </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check if the data acquisition is still running </p>
<dl class="section return"><dt>返回</dt><dd>True if running, false otherwise </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1_grabber.html#ae3a9df18b055d26ba339dc9fac408a7f">pcl::Grabber</a>.</p>

</div>
</div>
<a id="ac546d3496604f572c8d01626e176071d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac546d3496604f572c8d01626e176071d">&#9670;&nbsp;</a></span>isTcpPortOpen()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::isTcpPortOpen </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check if a TCP port is opened </p>
<dl class="section return"><dt>返回</dt><dd>True if open, false otherwise </dd></dl>

</div>
</div>
<a id="a26f4375470cf58ff889667257463c090"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26f4375470cf58ff889667257463c090">&#9670;&nbsp;</a></span>jsonTransformationToAngleAxis()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::jsonTransformationToAngleAxis </td>
          <td>(</td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>translation</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the angle axis parameters corresponding to a JSON string </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">json</td><td>A string containing the angle axis transformation in JSON format </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">alpha</td><td>Euler angle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">axis</td><td><a class="el" href="structpcl_1_1_axis.html" title="A point structure representing an Axis using its normal coordinates. (SSE friendly)">Axis</a> vector </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">translation</td><td>Translation vector </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>The units are meters and radians! </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See: <a href="http://www.ensenso.de/manual/transformation.htm">transformation page</a> in the EnsensoSDK documentation </dd></dl>

</div>
</div>
<a id="ae9dc248e5eccfbcbe870b0ffc7f9c504"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9dc248e5eccfbcbe870b0ffc7f9c504">&#9670;&nbsp;</a></span>jsonTransformationToEulerAngles()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::jsonTransformationToEulerAngles </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the Euler angles corresponding to a JSON string (an angle axis transformation) </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">json</td><td>A string containing the angle axis transformation in JSON format </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">x</td><td>The X translation </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">y</td><td>The Y translation </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">z</td><td>The Z translation </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">w</td><td>The yaW angle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>The Pitch angle </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>The Roll angle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>The units are meters and radians! </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See: <a href="http://www.ensenso.de/manual/transformation.htm">transformation page</a> in the EnsensoSDK documentation </dd></dl>

</div>
</div>
<a id="ac5a855363a529e1212eecd6bdfc34742"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5a855363a529e1212eecd6bdfc34742">&#9670;&nbsp;</a></span>jsonTransformationToMatrix()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::jsonTransformationToMatrix </td>
          <td>(</td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>transformation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Affine3d &amp;&#160;</td>
          <td class="paramname"><em>matrix</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the JSON string corresponding to a 4x4 matrix </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">transformation</td><td>The input transformation </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">matrix</td><td>A matrix containing JSON transformation </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>The units are meters and radians! </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See: <a href="http://www.ensenso.de/manual/index.html?cmdconverttransformation.htm">ConvertTransformation page</a> in the EnsensoSDK documentation </dd></dl>

</div>
</div>
<a id="a8dfa1c0930f95fcb8601297d678176b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8dfa1c0930f95fcb8601297d678176b6">&#9670;&nbsp;</a></span>matrixTransformationToJson()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::matrixTransformationToJson </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Affine3d &amp;&#160;</td>
          <td class="paramname"><em>matrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>pretty_format</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the JSON string corresponding to a 4x4 matrix </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">matrix</td><td>The input matrix </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">json</td><td>A string containing the matrix transformation in JSON format </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pretty_format</td><td>JSON formatting style </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>The units are meters and radians! </dd></dl>
<dl class="section note"><dt>注解</dt><dd>See: <a href="http://www.ensenso.de/manual/index.html?cmdconverttransformation.htm">ConvertTransformation page</a> in the EnsensoSDK documentation </dd></dl>

</div>
</div>
<a id="a4cf25748d5a2443f346f5b031cdd1657"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4cf25748d5a2443f346f5b031cdd1657">&#9670;&nbsp;</a></span>openDevice()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::openDevice </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>device</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Opens an Ensenso device </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">device</td><td>The device ID to open </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>

</div>
</div>
<a id="add59b06d6b02aceaae73ef3c87db0373"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add59b06d6b02aceaae73ef3c87db0373">&#9670;&nbsp;</a></span>openTcpPort()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::openTcpPort </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>port</em> = <code>24000</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open TCP port to enable access via the <a href="http://www.ensenso.de/manual/software_components.htm">nxTreeEdit</a> program. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>The port number </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>

</div>
</div>
<a id="a9cf97b0d7ccfe7cf0e3a879d333dd8ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cf97b0d7ccfe7cf0e3a879d333dd8ba">&#9670;&nbsp;</a></span>processGrabbing()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::EnsensoGrabber::processGrabbing </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Continuously asks for images and or point clouds data from the device and publishes them if available. PCL time stamps are filled for both the images and clouds grabbed (see <a class="el" href="classpcl_1_1_ensenso_grabber.html#a6fbd5b77840cea6b5ed0da8c55161370">getPCLStamp</a>) </p>
<dl class="section note"><dt>注解</dt><dd>The cloud time stamp is the RAW image time stamp </dd></dl>

</div>
</div>
<a id="a2063306cd947f67ab5a55fcfe550ee8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2063306cd947f67ab5a55fcfe550ee8b">&#9670;&nbsp;</a></span>setExtrinsicCalibration() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::setExtrinsicCalibration </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>euler_angle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>rotation_axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>translation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>target</em> = <code>&quot;Hand&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update Link node in NxLib tree </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>"Hand" or "Workspace" for example </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">euler_angle</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rotation_axis</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">translation</td><td>Translation in meters </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>Translation are in meters, rotation angles in radians! (stored in mm/radians in Ensenso tree) </dd></dl>
<dl class="section note"><dt>注解</dt><dd>If a calibration has been stored in the EEPROM, it is copied in the Link node at nxLib tree start. This method overwrites the Link node but does not write to the EEPROM.</dd></dl>
<p>More information on the parameters can be found in <a href="http://www.ensenso.de/manual/index.html?cameralink.htm">Link node</a> section of the Ensenso manual.</p>
<p>The point cloud you get from the Ensenso is already transformed using this calibration matrix. Make sure it is the identity transformation if you want the original point cloud! (use <a class="el" href="classpcl_1_1_ensenso_grabber.html#a6df93f62e9f56e9174df5db76fcc3afa">clearEEPROMExtrinsicCalibration</a>) Use <a class="el" href="classpcl_1_1_ensenso_grabber.html#a2e05aa2b2632d96e985cfe8d4e373676">storeEEPROMExtrinsicCalibration</a> to permanently store this transformation </p>

</div>
</div>
<a id="ae7eabb8ccc69bc16debfa054fbc52fb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7eabb8ccc69bc16debfa054fbc52fb0">&#9670;&nbsp;</a></span>setExtrinsicCalibration() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::setExtrinsicCalibration </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Affine3d &amp;&#160;</td>
          <td class="paramname"><em>transformation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>target</em> = <code>&quot;Hand&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update Link node in NxLib tree </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">transformation</td><td>Transformation matrix </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>"Hand" or "Workspace" for example </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>
<dl class="section warning"><dt>警告</dt><dd>Translation are in meters, rotation angles in radians! (stored in mm/radians in Ensenso tree) </dd></dl>
<dl class="section note"><dt>注解</dt><dd>If a calibration has been stored in the EEPROM, it is copied in the Link node at nxLib tree start. This method overwrites the Link node but does not write to the EEPROM.</dd></dl>
<p>More information on the parameters can be found in <a href="http://www.ensenso.de/manual/index.html?cameralink.htm">Link node</a> section of the Ensenso manual.</p>
<p>The point cloud you get from the Ensenso is already transformed using this calibration matrix. Make sure it is the identity transformation if you want the original point cloud! (use <a class="el" href="classpcl_1_1_ensenso_grabber.html#a6df93f62e9f56e9174df5db76fcc3afa">clearEEPROMExtrinsicCalibration</a>) Use <a class="el" href="classpcl_1_1_ensenso_grabber.html#a2e05aa2b2632d96e985cfe8d4e373676">storeEEPROMExtrinsicCalibration</a> to permanently store this transformation </p>

</div>
</div>
<a id="aef5f7e530c2b84b4b11644343938d664"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef5f7e530c2b84b4b11644343938d664">&#9670;&nbsp;</a></span>setExtrinsicCalibration() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::setExtrinsicCalibration </td>
          <td>(</td>
          <td class="paramtype">const std::string&#160;</td>
          <td class="paramname"><em>target</em> = <code>&quot;Hand&quot;</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Update Link node in NxLib tree with an identity matrix </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>"Hand" or "Workspace" for example </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise </dd></dl>

</div>
</div>
<a id="a3b10963e90c7a2acc28016ca7036917f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b10963e90c7a2acc28016ca7036917f">&#9670;&nbsp;</a></span>start()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::EnsensoGrabber::start </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Start the point cloud and or image acquisition </p>
<dl class="section note"><dt>注解</dt><dd>Opens device "0" if no device is open </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1_grabber.html#abdc9b2f91a0dba06a4ec2280712fd9f9">pcl::Grabber</a>.</p>

</div>
</div>
<a id="a2e05aa2b2632d96e985cfe8d4e373676"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e05aa2b2632d96e985cfe8d4e373676">&#9670;&nbsp;</a></span>storeEEPROMExtrinsicCalibration()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::EnsensoGrabber::storeEEPROMExtrinsicCalibration </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy the link defined in the Link node of the nxTree to the EEPROM </p>
<dl class="section return"><dt>返回</dt><dd>True if successful, false otherwise Refer to <a class="el" href="classpcl_1_1_ensenso_grabber.html#a2063306cd947f67ab5a55fcfe550ee8b">setExtrinsicCalibration</a> for more information about how the EEPROM works.<br  />
After calling <a class="el" href="classpcl_1_1_ensenso_grabber.html#a2277fe79f8aca23bac888523f1bfa0f9">computeCalibrationMatrix</a>, this enables to permanently store the matrix. </dd></dl>
<dl class="section note"><dt>注解</dt><dd>The target must be specified (<a class="el" href="classpcl_1_1_ensenso_grabber.html#a2277fe79f8aca23bac888523f1bfa0f9">computeCalibrationMatrix</a> specifies the target) </dd></dl>

</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="a3d5d6d55a5871455fe5f21e3821fe3a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d5d6d55a5871455fe5f21e3821fe3a9">&#9670;&nbsp;</a></span>camera_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NxLibItem pcl::EnsensoGrabber::camera_</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reference to the camera tree </p>
<dl class="section warning"><dt>警告</dt><dd>You must handle NxLib exceptions manually when playing with <a class="el" href="classpcl_1_1_ensenso_grabber.html#a3d5d6d55a5871455fe5f21e3821fe3a9">camera_</a> ! </dd></dl>

</div>
</div>
<a id="acb694e94e1e8256dcc8a2f8b296f3ee2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb694e94e1e8256dcc8a2f8b296f3ee2">&#9670;&nbsp;</a></span>root_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_ptr&lt;const NxLibItem&gt; pcl::EnsensoGrabber::root_</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reference to the NxLib tree root </p>
<dl class="section warning"><dt>警告</dt><dd>You must handle NxLib exceptions manually when playing with <a class="el" href="classpcl_1_1_ensenso_grabber.html#acb694e94e1e8256dcc8a2f8b296f3ee2">root_</a> ! See ensensoExceptionHandling in ensenso_grabber.cpp </dd></dl>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>io/include/pcl/io/<a class="el" href="ensenso__grabber_8h_source.html">ensenso_grabber.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_ensenso_grabber.html">EnsensoGrabber</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
